#!/bin/bash
# file: .git/hooks/pre-commit
# funciton: 在执行commit时，自动运行该脚本，如果执行出错，则commit失败

# 设置下面任何命令执行出错，立即返回
set -e
unset IFS
unset -f cd

TOP_LEVEL_DIR=$(git rev-parse --show-toplevel)
BUILD_DIR="$TOP_LEVEL_DIR/build"

echo ">>>> Run Uint Tests <<<<"
# 跳转到项目的顶层目录

mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"

# 构建所有单元测试
if command -v nmake &> /dev/null; then
    cmake .. -G "Ninja"
    ninja tests
else 
    cmake ..
    make tests -j"$(nproc)"
fi

# 运行单元测试
ctest --output-on-failure